package cn.com.Kol.ITPMP.TenMajorAreas.model;

import static cn.com.Kol.ITPMP.System.Constants.*;

import cn.com.Kol.ITPMP.System.Area;
import cn.com.Kol.ITPMP.System.Process;

public class ScopeManagement extends Area {

    private Process MakeScopeManagementPlan = new Process(MAKE_SCOPE_MANAGEMENT_PLAN);
    private Process CollectRequirements = new Process(COLLECT_REQUIREMENTS);
    private Process ScopeDefinition = new Process(SCOPE_DEFINITION);
    private Process CreateWBS = new Process(CREATE_WBS);
    private Process ScopeVerification = new Process(SCOPE_VERIFICATION);
    private Process ScopeControl = new Process(SCOPE_CONTROL);

    public void IntegrationManagementProcess(){
        CreateProcess(MakeScopeManagementPlan);
        CreateProcess(CollectRequirements);
        CreateProcess(ScopeDefinition);
        CreateProcess(CreateWBS);
        CreateProcess(ScopeVerification);
        CreateProcess(ScopeControl);
    }

    public void SetInputs(Process process){
        switch (process.getProcessName()){
            case "规划范围管理":
                process.inputs(PROJECT_MANAGEMENT_PLAN);
                process.inputs(PROJECT_CHARTER);
                process.inputs(ENTERPRISE_ENVIRONMENTAL_FACTORS);
                process.inputs(ORGANIZATIONAL_PROCESS_ASSETS);
                break;
            case "收集需求":
                process.inputs(SCOPE_MANAGEMENT_PLAN);
                process.inputs(REQUIREMENTS_MANAGEMENT_PLAN);
                process.inputs(STAKEHOLDER_MANAGEMENT_PLAN);
                process.inputs(PROJECT_CHARTER);
                process.inputs(STAKEHOLDER_REGISTER);
                break;
            case "范围定义":
                process.inputs(SCOPE_MANAGEMENT_PLAN);
                process.inputs(PROJECT_CHARTER);
                process.inputs(REQUIREMENTS_DOCUMENTATION);
                process.inputs(ORGANIZATIONAL_PROCESS_ASSETS);
                break;
            case "创建WBS":
                process.inputs(SCOPE_MANAGEMENT_PLAN);
                process.inputs(PROJECT_SCOPE_STATEMENT);
                process.inputs(REQUIREMENTS_DOCUMENTATION);
                process.inputs(ENTERPRISE_ENVIRONMENTAL_FACTORS);
                process.inputs(ORGANIZATIONAL_PROCESS_ASSETS);
            case "范围确认":
                process.inputs(PROJECT_MANAGEMENT_PLAN);
                process.inputs(REQUIREMENTS_DOCUMENTATION);
                process.inputs(REQUIREMENTS_TRACKING_MATRIX);
                process.inputs(VERIFIED_DELIVERABLES);
                process.inputs(WORK_PERFORMANCE_DATA);
            case "范围控制":
                process.inputs(PROJECT_MANAGEMENT_PLAN);
                process.inputs(REQUIREMENTS_DOCUMENTATION);
                process.inputs(REQUIREMENTS_TRACKING_MATRIX);
                process.inputs(WORK_PERFORMANCE_DATA);
                process.inputs(ORGANIZATIONAL_PROCESS_ASSETS);


        }
    }
    public void UseToolAndTech(Process process) {
        switch (process.getProcessName()) {
            case "规划范围管理":
                process.useToolAndTech(EXPERT_JUDGEMENT);
                process.useToolAndTech(CONFERENCE);
                break;
            case "收集需求":
                process.useToolAndTech(INTERVIEW);
                process.useToolAndTech(FOCUS_GROUP);
                process.useToolAndTech(GUIDED_SEMINARS);
                process.useToolAndTech(GROUP_INNOVATION_TECHNOLOGY);
                process.useToolAndTech(GROUP_DECISION_MAKING_TECHNIQUE);
                process.useToolAndTech(QUESTIONNAIRE_SURVEY);
                process.useToolAndTech(OBSERVE);
                process.useToolAndTech(PROTOTYPING);
                process.useToolAndTech(BENCHMARKING);
                process.useToolAndTech(SYSTEM_INTERACTION_DIAGRAM);
                process.useToolAndTech(FILE_ANALYSIS);
                break;
            case "范围定义":
                process.useToolAndTech(EXPERT_JUDGEMENT);
                process.useToolAndTech(PRODUCT_ALALYSIS);
                process.useToolAndTech(ALTERNATIVE_PLAN_GENERATION);
                process.useToolAndTech(GUIDED_SEMINARS);
            case "创建WBS":
                process.useToolAndTech(BREAKDOWN);
                process.useToolAndTech(EXPERT_JUDGEMENT);
            case "范围确认":
                process.useToolAndTech(CHECK);
                process.useToolAndTech(GROUP_DECISION_MAKING_TECHNIQUE);
            case "范围控制":
                process.useToolAndTech(VARIANCE_ANALYSIS);




        }
    }
    public void SetOutputs(Process process){
        switch (process.getProcessName()){
            case "规划范围管理":
                process.outputs(SCOPE_MANAGEMENT_PLAN);
                process.outputs(REQUIREMENTS_MANAGEMENT_PLAN);
            case "收集需求":
                process.outputs(REQUIREMENTS_DOCUMENTATION);
                process.outputs(REQUIREMENTS_TRACKING_MATRIX);
            case "范围定义":
                process.outputs(PROJECT_SCOPE_STATEMENT);
                process.outputs(PROJECT_FILE_UPDATE);
            case "创建WBS":
                process.outputs(SCOPE_BASELINE);
                process.outputs(PROJECT_FILE_UPDATE);
            case "范围确认":
                process.outputs(ACCEPTABLE_DELIVERABLES);
                process.outputs(CHANGE_REQUESTS);
                process.outputs(WORK_PERFORMANCE_INFO);
                process.outputs(PROJECT_FILE_UPDATE);
            case "范围控制":
                process.outputs(WORK_PERFORMANCE_INFO);
                process.outputs(CHANGE_REQUESTS);
                process.outputs(PROJECT_MANAGEMENT_PLAN_UPDATE);
                process.outputs((PROJECT_FILE_UPDATE));
                process.outputs(ORGANIZATIONAL_PROCESS_ASSETS_UPDATE);


        }
    }





}
